package com.rongji.dfish.ui.form;

/**
 * LinkableSuggestionBox 默认可以通过填写出现输入提示的输入框，且所选择的选项可支持链接，主要有{@link Combobox}和{@link Linkbox}
 * @author DFish Team
 *
 * @param <T> 当前对象类型
 */
@SuppressWarnings("unchecked")
public abstract class LinkableSuggestionBox<T extends LinkableSuggestionBox<T>> extends SuggestionBox<T>{

	private String text;
	private Boolean strict;
	private ComboboxOption pub;
	private String dropsrc;//显示所有结果的 view src。;
//	private String src;//在线匹配关键词的 view src。支持 $value 和 $text 变量。
	private String loadingtext;
	
	/**
	 * 设置初始显示文本， 提示: 如果strict值为为真，而且value不为空，那么建议设置为 loading... 可以收到较好的效果
	 * 
	 * @param text String
	 * @return 本身，这样可以继续设置其他属性
	 */
	public T setText(String text) {
		this.text = text;
		return (T) this;
	}
	
	/**
	 * @return the text
	 */
	public String getText() {
		return text;
	}
	
	/**
	 * 设置是否严格检查输入值必须有效。如果值为真则输入置必须在提示信息那有才能提交。 如果值为假输入值也当做值来提交
	 * 
	 * @param strict boolean
	 * @return 本身，这样可以继续设置其他属性
	 */
    public T setStrict(Boolean strict) {
		this.strict = strict;
		return (T) this;
	}

	/**
	 * 设置是否严格检查输入值必须有效。如果值为真则输入置必须在提示信息那有才能提交。 如果值为假输入值也当做值来提交
	 * @return the strict
	 */
	public Boolean getStrict() {
		return strict;
	}

	/**
	 * Combobox的默认参数。
	 * @return pub
	 */
	public ComboboxOption getPub() {
		return pub;
	}


	/**
	 * Combobox的默认参数。
	 * @param pub ComboboxOption
	 * @return 本身，这样可以继续设置其他属性
	 */
	public T setPub(ComboboxOption pub) {
		this.pub = pub;
		return (T) this;
	}
	/**
	 * 显示所有结果的 view src。;
	 * @return String
	 */
	public String getDropsrc() {
		return dropsrc;
	}
	
	/**
	 * 显示所有结果的 view src。;
	 * @param dropsrc
	 * @return 本身，这样可以继续设置其他属性
	 */
	public T setDropsrc(String dropsrc) {
		this.dropsrc = dropsrc;
		return (T) this;
	}


	/**
	 * 加载时显示的文本
	 * @return String
	 */
	public String getLoadingtext() {
		return loadingtext;
	}

	/**
	 * 加载时显示的文本
	 * @param loadingtext 加载时显示的文本
	 * @return this
	 */
	public T setLoadingtext(String loadingtext) {
		this.loadingtext = loadingtext;
		return (T) this;
	}
	
}
